import Vue from 'vue'
import { ComponentModel } from '@TG/interface'

/**
 * 构建 Vue 虚拟 DOM 节点 key
 * @param cm 组件模型
 * @param index （遍历时）组件索引
 */
export const buildDOMKey = (cm: ComponentModel, index: number = 0) => {
  const tag = cm.tag || cm.component?.name || 'no-tag'
  const name = cm.name || 'no-name'
  const prop = cm.props?.get('prop') || 'no-prop'
  const key = `${tag}-${name}-${prop}-${index}`
  return key
}

/**
 * 显示加载遮盖层
 * @param vm Vue 实例（this）
 */
export const showLoading = (vm: Vue) => {
  return vm.$loading({
    lock: true,
    text: '请等待 ...',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.2)'
  })
}
